# 函数传参
def test_fun(a,b,c):
    print(a,b,c)

test_fun(b=2,c=3,a=1) # 形参名称对应上就行
test_fun(6,b=2,c=3) # 位置参数在前面

# 默认参数
def test_fun2(a,b,c=6):
    print(a,b,c)
test_fun2(7,9)
test_fun2(7,9,11)

#  不定长参数
# 位置  参数列表是元素tuple 类型了
def test3(*args):
    print(args, type(args))

test3(1,2,3) # (1, 2, 3) <class 'tuple'>

# 字典 参数必须传字典类型
def test4(**kwargs):
    print(kwargs, type(kwargs))

test4(a=1,b=2,c=3) # {'a': 1, 'b': 2, 'c': 3} <class 'dict'>

def test5(fn):
    fn(1)

test5(lambda x: print(x))

# 在函数式编程中，lambda 常用于对集合进行批量操作。
#
# 示例：批量处理数据
# python
# 复制
numbers = [1, 2, 3, 4]

# 平方每个元素
squared = list(map(lambda x: x ** 2, numbers))  # [1, 4, 9, 16]

# 过滤偶数
evens = list(filter(lambda x: x % 2 == 0, numbers))  # [2, 4]

#  数据排序/过滤时的 key 函数
# 在 sorted()、list.sort()、max()、min() 等方法中，lambda 可以快速定义排序或比较规则。
#
# 示例：按字典的某个值排序

users = [
    {"name": "Alice", "age": 30},
    {"name": "Bob", "age": 25},
    {"name": "Charlie", "age": 35}
]

# 按 age 排序
# 提取键值：
# sorted() 会遍历 users 中的每个字典，用 lambda x: x["age"] 提取每个字典的 "age" 值：
#
# Alice → 30
#
# Bob → 25
#
# Charlie → 35
#
# 按值排序：
# 根据提取的年龄值 [30, 25, 35]，默认按升序排列，得到顺序 25 < 30 < 35。
sorted_users = sorted(users, key=lambda x: x["age"])